package com.kitten.dataAlign.domain.mapper;

import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * @author kitten
 */
@Mapper
public interface SelectMapper {

    /**
     * 日增量表：关注数计数变更 - 批量查询
     * @param tableNameSuffix
     * @param batchSize
     * @return
     */
    List<Long> selectBatchFromDataAlignFollowingCountTempTable(@Param("tableNameSuffix") String tableNameSuffix,
                                                               @Param("batchSize") int batchSize);

    /**
     * 日增量表：粉丝数计数变更 - 批量查询
     * @param tableNameSuffix
     * @param batchSize
     * @return
     */
    List<Long> selectBatchFromDataAlignFansCountTempTable(@Param("tableNameSuffix") String tableNameSuffix,
                                                               @Param("batchSize") int batchSize);

    /**
     * 查询 t_following 关注表，获取关注总数
     * @param userId
     * @return
     */
    int selectCountFromFollowingTableByUserId(long userId);

    /**
     * 查询 t_fans 粉丝表，获取粉丝总数
     * @param userId
     * @return
     */
    int selectCountFromFansTableByUserId(long userId);

    /**
     * 日增量表：笔记点赞数计数变更 - 批量查询
     * @param tableNameSuffix
     * @param batchSize
     * @return
     */
    List<Long> selectBatchFromDataAlignNoteLikeCountTempTable(@Param("tableNameSuffix") String tableNameSuffix,
                                                               @Param("batchSize") int batchSize);

    /**
     * 日增量表：笔记收藏数计数变更 - 批量查询
     * @param tableNameSuffix
     * @param batchSize
     * @return
     */
    List<Long> selectBatchFromDataAlignNoteCommentCountTempTable(@Param("tableNameSuffix") String tableNameSuffix,
                                                               @Param("batchSize") int batchSize);

    /**
     * 查询 t_note_like 点赞表，获取点赞总数
     * @param noteId
     * @return
     */
    int selectCountFromNoteLikeTableByNoteId(Long noteId);

    /**
     * 查询 t_note_collect 收藏表，获取收藏总数
     * @param noteId
     * @return
     */
    int selectCountFromNoteCollectTableByNoteId(Long noteId);

    /**
     * 日增量表：用户被点赞数计数变更 - 批量查询
     * @param tableNameSuffix
     * @param batchSize
     * @return
     */
    List<Long> selectBatchFromDataAlignUserLikeCountTempTable(@Param("tableNameSuffix") String tableNameSuffix,
                                                               @Param("batchSize") int batchSize);

    /**
     * 查询 t_user_count 用户点赞关联表, 获取用户被点赞总数
     * @param userId
     * @return
     */
    int selectCountFromUserLikeTableByUserId(long userId);

    /**
     * 日增量表：用户被收藏数计数变更 - 批量查询
     * @param tableNameSuffix
     * @param batchSize
     * @return
     */
    List<Long> selectBatchFromDataAlignUserCollectCountTempTable(@Param("tableNameSuffix") String tableNameSuffix,
                                                              @Param("batchSize") int batchSize);

    /**
     * 查询 t_user_count 用户收藏关联表, 获取用户被收藏总数
     * @param userId
     * @return
     */
    int selectCountFromUserCollectTableByUserId(long userId);

    /**
     * 日增量表：用户发布笔记数计数变更 - 批量查询
     * @param tableNameSuffix
     * @param batchSize
     * @return
     */
    List<Long> selectBatchFromDataAlignUserPublishCountTempTable(@Param("tableNameSuffix") String tableNameSuffix,
                                                                  @Param("batchSize") int batchSize);

    /**
     * 查询 t_user_count 用户计数表, 获取用户发布总数
     * @param userId
     * @return
     */
    int selectCountFromUserPublishTableByUserId(long userId);
}
